Sublaminate library generation for optimization of multi-panel composite parts

ABSTRACT

Systems and methods are provided for composite part design. One embodiment is a method of creating a library of sublaminates used in optimizing fiber orientations of a multi-layer composite part subdivided along its depth into panels that each comprise a fraction of the area of the composite part. The method includes creating sublaminates that each comprise consecutively stacked layers having a unique sequence of fiber orientations, checking the sublaminates for compliance with stacking sequence rules that constrain how fiber orientations are sequenced, and removing sublaminates that do not comply with the stacking sequence rules. The method further includes generating new sublaminates that each include an additional layer, by, for each of multiple fiber orientations: selecting a sublaminate that was not remove, and generating a new sublaminate by appending an additional layer having the fiber orientation to the selected sublaminate.

FIELD

The disclosure relates to the field of composite part construction, andin particular, to designing multi-layer composite parts.

BACKGROUND

Many composite parts (e.g., carbon fiber products, such as aircraftwings) are created as a series of vertically stacked plies which arebonded/cured together over time. In this manner, plies of constituentmaterial are iteratively laid up and cured to consolidate into thecomposite part. To enhance the strength of a composite part with respectto stresses applied in different directions, each ply of constituentmaterial within the composite part may include fibers that are orientedin a different direction than the fibers of neighboring plies. Thecombination of fiber orientations for the plies within the part dictatesthe strength of the part with respect to different kinds of stresses.

For complex parts that are divided into panels, the process becomes morecomplicated. For example, a design for the part may dictate complex anddiffering patterns of fiber orientations. These fiber orientations mayeven vary across multiple panels that together form the part. Withcomplex parts that are intended to bear great stresses and aremission-critical (e.g., the wings of an aircraft), it remains acomplicated process to ensure that desired strength is provided. Thus,current techniques for designing composite parts focus on ensuring partstrength, and do not address manufacturing efficiency for a given part.

SUMMARY

Embodiments described herein enable the rapid creation of libraries ofmulti-layer sublaminates for composite parts. Each sublaminate has aunique sequence of fiber orientations. These libraries may be generatedby use of an integer tree and checked for compliance with stackingsequence rules both during and after the generation of the tree. In thismanner, a composite design system may rapidly identify and ignorefamilies of sublaminates that do not comply with the stacking sequencerules.

One embodiment is a method of creating a library of sublaminates used inoptimizing fiber orientations of a multi-layer composite part subdividedalong its depth into panels that each comprise a fraction of the area ofthe composite part. The method includes creating sublaminates that eachcomprise consecutively stacked layers having a unique sequence of fiberorientations, checking the sublaminates for compliance with stackingsequence rules that constrain how fiber orientations are sequenced, andremoving sublaminates that do not comply with the stacking sequencerules. The method further includes generating new sublaminates that eachinclude an additional layer, by, for each of multiple fiberorientations: selecting a sublaminate that was not remove, andgenerating a new sublaminate by appending an additional layer having thefiber orientation to the selected sublaminate. The method furtherincludes repeating the checking, the removing, and the generating untila maximum number of layers has been reached, and storing thesublaminates in memory as a library of available sublaminates fordesigning the composite part.

A further embodiment is a non-transitory computer readable mediumembodying programmed instructions which, when executed by a processor,are operable for performing a method of creating a library ofsublaminates used in optimizing fiber orientations of a multi-layercomposite part subdivided along its depth into panels that each comprisea fraction of the area of the composite part. The method includescreating sublaminates that each comprise consecutively stacked layershaving a unique sequence of fiber orientations, checking thesublaminates for compliance with stacking sequence rules that constrainhow fiber orientations are sequenced, and removing sublaminates that donot comply with the stacking sequence rules. The method further includesgenerating new sublaminates that each include an additional layer, by,for each of multiple fiber orientations: selecting a sublaminate thatwas not removed, and generating a new sublaminate by appending anadditional layer having the fiber orientation to the selectedsublaminate. The method further includes repeating the checking, theremoving, and the generating until a maximum number of layers has beenreached, and storing the sublaminates in memory as a library ofavailable sublaminates for designing the composite part.

A further embodiment is an apparatus that includes a memory that storesstacking sequence rules that constrain how fiber orientations aresequenced, and a controller that creates a library of sublaminates usedin optimizing fiber orientations of a multi-layer composite partsubdivided along its depth into panels that each comprise a fraction ofthe area of the composite part. The controller creates the library bycreating sublaminates that each comprise consecutively stacked layershaving a unique sequence of fiber orientations, checking thesublaminates for compliance with the stacking sequence rules, andremoving sublaminates that do not comply with the stacking sequencerules. The controller further generates new sublaminates that eachinclude an additional layer, by, for each of multiple fiberorientations: selecting a sublaminate that was not removed, andgenerating a new sublaminate by appending an additional layer having thefiber orientation to the selected sublaminate. The controller repeatsthe checking, the removing, and the generating until a maximum number oflayers has been reached, and stores the sublaminates in the memory as alibrary of available sublaminates for designing the composite part.

Other exemplary embodiments (e.g., methods and computer-readable mediarelating to the foregoing embodiments) may be described below. Thefeatures, functions, and advantages that have been discussed can beachieved independently in various embodiments or may be combined in yetother embodiments further details of which can be seen with reference tothe following description and drawings.

DESCRIPTION OF THE DRAWINGS

Some embodiments of the present disclosure are now described, by way ofexample only, and with reference to the accompanying drawings. The samereference number represents the same element or the same type of elementon all drawings.

FIG. 1 is a block diagram of a composite manufacturing environment in anexemplary embodiment.

FIG. 2 is a diagram of an aircraft in an exemplary embodiment.

FIG. 3 is a diagram of a wing of an aircraft that includes a compositepart divided into panels in an exemplary embodiment.

FIG. 4 is a diagram of a design for a portion of a part that includesmultiple layers divided into panels in an exemplary embodiment.

FIG. 5 is a flowchart illustrating a method for operating a compositedesign system in an exemplary embodiment.

FIGS. 6-9 illustrate exemplary optimization metrics for ply sequences inan exemplary embodiment.

FIG. 10 is a diagram illustrating a relationship between a design for acomposite part, and an output resulting in the composite part.

FIG. 11 is a chart illustrating sublaminates that are compatible with ablock of a composite part in an exemplary embodiment.

FIG. 12 is a flowchart illustrating additional steps implemented foroperating a composite design system in an exemplary embodiment.

FIG. 13 illustrates a set of six adjacent panels of a composite part inan exemplary embodiment.

FIG. 14 illustrates an exemplary design for a block of a composite partcomprising six adjacent panels in an exemplary embodiment.

FIG. 15 illustrates ply shapes for each of multiple layers of thecomposite part of FIG. 12, based on the design of FIG. 13.

FIG. 16 is a flowchart illustrating a method for analyzing thefeasibility of a set of rules prior to engaging in optimization in anexemplary embodiment.

FIG. 17 is a table illustrating a comparison of ply count ranges to plycounts for a panel of a composite part in an exemplary embodiment.

FIG. 18 illustrates a report presented via a display for indicatingdetected compliance issues to a user.

FIG. 19 is a block diagram illustrating components of a controller of acomposite design system in an exemplary embodiment.

FIGS. 20-21 are flowcharts illustrating a method for generatinglibraries of sublaminates in an exemplary embodiment.

FIG. 22 is a diagram illustrating branching of an integer tree used togenerate a library of sublaminates in an exemplary embodiment.

FIG. 23 is a flow diagram of aircraft production and service methodologyin an exemplary embodiment.

FIG. 24 is a block diagram of an aircraft in an exemplary embodiment.

DESCRIPTION

The figures and the following description illustrate specific exemplaryembodiments of the disclosure. It will thus be appreciated that thoseskilled in the art will be able to devise various arrangements that,although not explicitly described or shown herein, embody the principlesof the disclosure and are included within the scope of the disclosure.Furthermore, any examples described herein are intended to aid inunderstanding the principles of the disclosure, and are to be construedas being without limitation to such specifically recited examples andconditions. As a result, the disclosure is not limited to the specificembodiments or examples described below, but by the claims and theirequivalents.

FIG. 1 is a block diagram of a composite manufacturing environment 100in an exemplary embodiment. According to FIG. 1, environment 100includes composite design system 110, which is capable of designing acomposite part 150. Composite design system 110 optimizes part 150 toconform with stacking sequence rules that ensure part 150 has desiredstrength. Composite design system 110 also ensures that part 150 iscapable of being manufactured efficiently by AFP machine 140.

In this embodiment, composite design system 110 includes controller 112,interface (I/F) 114, memory 116, and display 118 (e.g., a screen forpresenting stored information). Controller 112 utilizes I/F 114 toaccess rules constraining how part 150 may be constructed, informationdescribing the geometry of part 150, and/or other information. I/F 114may acquire this information from server 130 via network 120. Controller112 also generates designs for part 150, optimizing the designs toensure that they will more efficiently utilize the time of AFP machine140. These designs may be stored by controller 112 within memory 116.Controller 112 may be implemented, for example, as custom circuitry, asa processor executing programmed instructions, or some combinationthereof. I/F 114 comprises any suitable combination of circuitry and/orcomponents for transmitting data (e.g., via network 120). Memory 116comprises any suitable data storage device such as a hard disk, flashmemory, etc.

Further details of the operation of composite design system 110 will bedescribed with regard to FIG. 5 below. However, FIGS. 2-4 are discussedbefore FIG. 5 in order to provide context illustrating an exemplarycomposite part that may be designed by system 110.

FIG. 2 is a diagram of an aircraft 200 in an exemplary embodiment.Aircraft 200 includes nose 210, wing 220, fuselage 230, and tail 240.Further discussion of aircraft 200 will focus on a multi-panel,multi-layer composite part for wing 220. However, similar techniques tothose described herein may be applied to any suitable composite part.

FIG. 3 is a diagram of a wing 220 of an aircraft that includes acomposite part 150 divided into panels 310 in an exemplary embodiment.Specifically, composite part 150 comprises a portion of an upper wingskin. The view for FIG. 3 is shown by view arrows 3 of FIG. 2. As shownin this diagram, each panel 310 comprises a small portion of the area ofpart 150. View arrows L along FIG. 3 indicate a possible view along thelength of wing 220.

FIG. 4 is a diagram of a design 400 for a portion of part 150 thatincludes multiple layers 410 divided into panels 310 in an exemplaryembodiment. FIG. 4 includes arrows for view L shown in FIG. 3, in orderto indicate how FIG. 4 aligns with FIG. 3. FIG. 4 illustrates that part150 includes multiple layers 410. A layer 410 indicates which panels indesign 400 will be laid up at the same fiber orientation by AFP machine140 onto part 150, before AFP machine 140 proceeds to lay up the nextlayer. The next layer may either have a different fiber orientation orhave plies that cover one or more panels already covered in the previouslayer. A layer may therefore designate each of the plies that are laidby AFP machine 140 onto part 150, before part 150 undergoes curing toconsolidate the plies onto part 150. As used herein, the combination ofplies that are physically laid for a single layer is referred to as a“ply sequence,” while a contiguous combination of plies within a singlelayer is referred to as a “ply shape.” A ply sequence may, for example,include one ply shape or multiple ply shapes. FIG. 4 also illustratesthat each layer 410 is divided into panels 310. Each panel 310 of eachlayer 410 may or may not be laid up with a ply, depending on the chosendesign.

A number of specific stacking sequence rules/guidelines may be used todictate how fibers are oriented across the layers of part 150 in orderto ensure that part 150 exhibits a desired strength and is capable ofenduring stresses applied during its lifetime. These may be referred toas “stacking sequence rules.” In FIG. 4, design 400 divides part 150along its depth (here, direction Z) into blocks (B1, B2). Each blockcomprises a set of contiguous layers within part 150. By dividing part150 into blocks, ply sequences may be optimized on a block-by-blockbasis to comply with the stacking sequence rules. Optimizing on ablock-by-block basis helps to ensure that optimization processes for acomposite part can be completed in a reasonable amount of time.

Illustrative details of the operation of composite design system 110will now be discussed with regard to FIG. 5. Assume, for thisembodiment, that a new design for composite part 150 is being created bycomposite design system 110, and that the new design shall comply withthe stacking sequence rules in order to ensure that part 150 hasadequate strength. At the same time, system 110 will optimize the newdesign for manufacturability to ensure that time at AFP machine 140 ismore efficiently utilized.

FIG. 5 is a flowchart illustrating a method 500 for designing amulti-layer composite part 150 in an exemplary embodiment. The steps ofmethod 500 are described with reference to composite design system 110of FIG. 1, but those skilled in the art will appreciate that method 500may be performed in other systems. The steps of the flowcharts describedherein are not all inclusive and may include other steps not shown. Thesteps described herein may also be performed in an alternative order.

Controller 112 initiates by receiving input via I/F 114 indicating ageometry of a multi-layer part (part 150). This information may indicatewhich panels are adjacent/neighboring within part 150, and may furtherinclude an expected number of plies for each different fiber orientationto be laid at each panel (e.g., a final depth/thickness and compositionof each completed panel in part 150). In a complex design, part 150exhibits a changing thickness along its length such that some panelswill include more plies than other panels. The geometry information mayfurther include information subdividing part 150 along its depth intolayers and/or blocks. According to FIG. 5, in step 502 controller 112subdivides part 150 into blocks (e.g., blocks B1-B2). Each blockcomprises a contiguous subset/stack of the layers of part 150. Thissubdividing of part 150 into blocks allows part 150 to be optimized on ablock-by-block basis by controller 112.

In step 504, controller 112 identifies stacking sequence rules thatconstrain how layers that have different fiber orientations are stackedwithin part 150. In one embodiment, the rules define four allowablefiber orientations for a layer (0°, 45°, −45°, and)90°, the rulesdictate that no more than four adjacent layers may have the same fiberorientation, the rules require that each block include at least onelayer of each orientation, etc. Systematic evaluation of these rules inan optimization environment is complicated by the fact that plies may beselectively omitted from panels within a given layer.

In step 506, controller 112 generates a guide (i.e., an arrangement offiber orientations for a block) that complies with the rules. The guideprescribes a fiber orientation for each layer of the block. The guidemay be generated by reference to the stacking sequence rules discussedabove.

In step 508, compatible “sublaminates” are identified for the generatedguide. A sublaminate is a set of consecutive ply sequences for theblock, and may be assigned on a panel-by-panel basis. Compatiblesublaminates are subsets of the layers in the guide for the block.Layers indicated in a guide may be omitted from a sublaminate, but thesequence indicated in the guide must be maintained in order for thesublaminate to be compatible. The sublaminates also are chosen to ensurethat they are individually compatible with the stacking sequence rules.Moreover, the set of sublaminates may be further reduced to ensure thatany combination of sublaminates through the thickness also comply withthe stacking sequence rules. The guides and compatible sublaminates maybe pre-calculated by controller 112 and filtered to ensure compliancewith the rules, thereby ensuring that part 150 has a desired strength.

However, while any of these sublaminates may be chosen to providedesired strength for part 150, it remains a problem to determine whatsublaminates will enhance manufacturability. To this end, controller 112subdivides the part into panels that each comprise a fraction of thearea of part 150 in step 510.

Controller 112 further selects a compatible sublaminate for each panelin each block, based on the compatible sublaminates for neighboringpanels in step 512. For example, controller 112 may select a compatiblesublaminate for a panel with the objective of increasing the number ofcontiguous plies laid by an AFP machine in a ply sequence. Thistechnique may therefore reduce the amount of time taken by the AFPmachine while laying-up ply sequences for the layers of the block.

Once compatible sublaminates are chosen for each panel in each block,the design is completed. Therefore, controller 112 may configure memory116 to store the design for use by AFP machine 140 when constructingpart 150.

Utilizing method 500 above, the ply shapes and/or sequences forindividual layers may be chosen in order to facilitate the speed ofmanufacturing/lay-up for each block. This in turn ensures that complexparts utilize designs that reduce their overall cost and/or time ofmanufacture. Further details of the optimization techniques used hereinare described with respect to the examples section below.

EXAMPLES

In the following examples, additional processes, systems, and methodsare described in the context of a composite design system 110 thatreduces layup time for a composite part. The system 110 optimizes plysequences while also ensuring that stacking sequence rules are met.

For many AFP processes a substantial amount of time is spent laying upplies of fiber (this is called “in-cycle time”). However, the rest ofthe time consists of machine down time (e.g., cleaning the machine,replacing cutters, fixing broken tows, etc.), inspection for each layer,and rework of fibers that have already been laid up. Thus, designs whichreduce in-cycle and/or out-of-cycle time for an AFP machine 140 enhancethe overall speed of production for a composite part. The followingexemplary optimization metrics are examples of metrics that may be used(alone or in combination) to ensure that ply sequences for the layers ofa composite part are chosen in such a manner as to increasemanufacturing speed of a layer, block, or entire composite part. Theexemplary metrics provided below are illustrative, and different metricsmay be utilized as desired in operating environments.

FIGS. 6-9 illustrate exemplary optimization metrics used to ensure thatply shapes are chosen which reduce the overall speed of laying-up acomposite part (e.g., via an AFP machine). In the following discussion,the term “course” refers to a band of material laid down by an AFP orautomated tape laying machine along a specified curve that follows thedesired fiber orientation on the surface. The band of material mayconsist of one or more strips of material. These strips may be dispensedand cut independently. Plies are formed by sequentially laying one ormultiple courses that fill up the area within the ply boundaries.Depending on the direction the AFP head moves strips are started orstopped at a ply boundary. Starting a strip is called an “add”, whilestopping a strip is called a “cut”. If a course is parallel to the plyboundary, part of the ply boundary may be formed by the outer edge ofthe outermost strip of a course.

Optimization Metric 1—Total Boundary

FIG. 6 illustrates two different ply sequences (610, 620) for a fourpanel long, three panel wide layer of a composite part. Each panel issquare, and has a length of X. As shown in FIG. 6, shaded panels 611 arefilled with a ply, while unshaded panels 612 are not filled with a ply.Since the panels that are filled with a ply are not contiguous, thetotal boundary length of ply sequence 610 is equal to (4 sides perpanel)*(6 panels)=24X. In contrast, the total boundary length of plysequence 620 is equal to 8X. Since some AFP machines slow down whenmaking a cut to a ply, and since the total border length of a ply shapeand/or sequence is strongly correlated with the number of cuts made byan AFP machine, optimizing a layer based on ply shape enhancesmanufacturing speed. The time to manufacture ply sequence 620 istherefore shorter than for ply shape 610, at least because ply sequence610 exhibits more cuts and adds, which is likely to cause more AFPmachine down time. Furthermore, since ply shape 610 exhibits more cuts,more time will be spent by an operator inspecting the ply sequence, andthere will be a greater likelihood that an edge will need rework (sincethere is more overall edge length).

Furthermore, ply shapes with a shorter total boundary are more likely touse long courses. Using longer courses instead of shorter coursesensures less idle time at an AFP machine, as the machine travels throughthe air from one course to the next. Longer courses also result infaster tape-laying because the AFP machine can reach its maximum speedwhile laying a course, since it takes time to get up to maximum speed.Thus, the total boundary length of a ply sequence stands as a goodindicator for the manufacturing efficiency of that ply sequence.

Optimization Metric 2—Cut Boundary

FIG. 7 illustrates two different ply sequences (710, 720) for a fourpanel long, three panel wide layer of a composite part. Each panel issquare, and has a length on its side of X. As shown in FIG. 7, shadedpanels 711 are filled with a ply, while unshaded panels 712 are notfilled with a ply. FIG. 7 further illustrates a direction (D) in whichthe AFP machine will be oriented when laying down plies for this layer.Furthermore, in this embodiment, each course is exactly one panel wide.It can quickly be understood that only one course of the AFP machine isused to create ply sequence 720, while three courses are used to createply sequence 710. Thus, ply sequence 710 may require the AFP machine tocut, stop, and reposition two more times than ply sequence 720. Anincreased number of cuts and courses also increases the chances ofmachine error when laying-up a ply sequence, as well as increasing theoverall inspection and rework time for that ply sequence. Inspectiongenerally takes place at the location of each cut and add on a compositepart, as well as in-between individual courses. Thus using fewer coursesto generate a ply sequence increases the manufacturing rate of thecomposite part. As used herein, any boundaries where courses are cut oradded are referred to as “cut boundaries.”

Optimization Metric 3—Internal Corners

FIG. 8 illustrates two different ply sequences (810, 820) that eachcomprise plies 812 laid up for a layer of a composite part. As shown inFIG. 8, shaded panels 812 are filled with a ply, while unshaded panels811 are not filled with a ply. FIG. 8 further illustrates that for plysequence 810, an extra cut 815 must be made in order to bridge a gapbetween panels, owing to AFP machine orientation D. In contrast, in plysequence 820, the orientation (D) of the AFP machine allows for coursesto be laid up in a single course without needing to stop and restart theAFP machine. As used herein, corners within a ply shape that require anAFP machine to stop, cut, and then resume (e.g., to lay multiplecollinear courses in a single course) are referred to as internalcorners. Internal corners occur if the fiber orientation of a layer isnot aligned with the boundaries of the ply sequence for that layer.Optimizing ply sequences to reduce the number of internal cornersreduces number of stops and restarts of an AFP machine during a singlerun/pass. Internal corners may be identified, for example, based on aknown orientation of fiber within the layer being laid up.

Optimization Metric 4—Number of Courses

FIG. 9 illustrates two different ply sequences (910, 920) for a fourpanel long, three panel wide layer of a composite part. Each panel issquare, and has a length on its side of X. As shown in FIG. 9, shadedpanels 911 are filled with a ply, while unshaded panels 912 are notfilled with a ply. FIG. 9 further illustrates a direction (D) in whichthe AFP machine will be oriented when laying down plies. This may, forexample, be the same orientation as the fiber orientation used for plieslaid up by the AFP machine. FIG. 9 illustrates that even when there arethe same number of filled panels in a ply sequence, with the same sizeborder, the speed of laying up that ply sequence can vary depending onthe ply shapes and relative positions chosen. In this example, plysequence 920 is more manufacturing efficient since it only uses threeone-panel wide courses, while ply sequence 910 uses four courses.Laying-up multiple plies with fewer courses also reduces off-part motionat an AFP machine, which increases manufacturing speed.

Optimization Metric 5—Average Course Length

An AFP machine will not reach its maximum lay-up speed if a course istoo short. This means that shorter courses result in longer lay-uptimes. Hence, it may be desirable to calculate average course length,(e.g., defined as ply sequence area divided by the number of courseswithin the ply shape) when optimizing ply shapes. The average courselength for the entire part can be calculated by dividing the total areafor all ply sequences by the total number of courses.

Exemplary Stacking Sequence Rules

Stacking sequence rules may constrain how a ply sequence is designed fora layer. Table 1 below illustrates an exemplary set of stacking sequencerules that may be utilized when designing a composite part.

TABLE 1 Stacking Sequence Rules Rule Description A Employ balance andsymmetry across the layers of the composite part B Do not stack morethan a threshold number of adjacent layers having the same fiberorientation. C Use at least one layer of each fiber orientation withinthe composite part D Add 45° layers in pairs of +45° and −45° E Minimizethe difference in fiber orientation angle between different plies

In this example, some rules may be flagged as mandatory forconsideration of controller 112 (e.g., no violations are allowed), whileother rules may be flagged as guidelines that may be violated undercertain circumstances (e.g., at locations that are closer to themid-plane of the composite part). In this example the rules are specificto laminates that consist of 0°, 90° and ±45° plies. Other rules mayapply to laminates that contain plies with different fiber orientations.The presented method is not restricted to four fiber orientations.

Composite Part Guides

When designing a composite part, a guide may be constructed to indicatethe fiber orientation that will be used for each layer/ply sequence.Controller 112 may then selectively elect to include plies within thedesign based on the guide, on a layer-by-layer and panel-by-panel basis.The design actually chosen for a part may include gaps (in the tabularrepresentation of a part design) where a ply is not laid for a givenlayer defined by the guide. However, when plies are applied by an AFPmachine onto the composite part, the plies that are separated by a gapin the design will be directly laid atop each other. This means that theplies laid for a given layer are not necessarily coplanar when laid upon the composite part. That is, as shown in FIG. 10, when a guide 1010is used to create a design 1020 for a composite part comprising panelsS1-S12, and design 1020 includes one or more empty portions 1022 withinits layers. The actual laid-up output 1030 for the product is condensedsuch that ply sequences separated across the thickness by empty panelsin design 1020 will be placed adjacent to each other in output 1030. Amid-plane of output 1030 is shown as a dotted line on a panel by panelbasis for FIG. 10.

Sublaminates

Sublaminates may be chosen based upon a guide for a corresponding block(i.e., a template dictating a fiber orientation for each layer of thecomposite part). Thus, if a guide for a block includes eight plysequences that each have a predefined fiber orientation, a sublaminateincludes up to eight ply sequences for an ordered subset of those fiberorientations. In embodiments where a guide is used, not all plysequences from the guide need to be present in the panel sublaminate.However, all plies in the sublaminate should at least be present in theguide for the block and in the correct order to fit. In this example,two sublaminates are compatible if they could both be used in a blockwithout violating the guide for that block. To illustrate this concept,diagram 1100 of FIG. 11 shows that sublaminates 1-5 (sub1-5) are capableof being placed in the same guide for the block. An empty cell in a rowindicates that no material is placed for that panel for that layer. Forexample, sublaminate “Sub 1” could be written as[45/90/−45/45/90/−45/0], while sublaminate “Sub2” could be written as[45/90/0/−45/0]. “Sub1” is compatible with “Sub2,” because “Sub1” can begenerated by omitting layer 4 from the guide block laminate, i.e.[45/90/−45/0/45/90/45/0], while “Sub 2” may be generated by omittinglayers 3, 5 and 6. Sublaminates are not compatible if they cannot bothbe inserted into a block without violating the fiber orientationsrequired for the layers of that block. For example, a sublaminate withfiber orientations [45/0/0/45] would not be compatible with the guidedepicted in FIG. 11, because there is only one 0° layer between layers 1and 5, and there is no 45° layer after layer 8.

Optimization Model

The optimization model used by controller 112 involves three steps asshown in FIG. 12. The first step involves generating sublaminates instep 1202. Hence, ply sequences that are compatible with each blockshould be determined. Once a library of compatible sublaminates has beengenerated, guides may be generated for the blocks in step 1204. Using aguide for the block, ply sequences may be optimized in step 1206.

The objective of sublaminate generation is to create a library ofsublaminates with feasible stacking sequences in a pre-processing stepand to exclude infeasible regions of the design space beforeoptimization is performed. This step helps to shrink the size of thesolution space that will be searched during optimization. To illustratethis concept, if four fiber orientations are allowed for each of tenlayers in a sublaminate, there will be 4¹⁰ (i.e., 1,048,576) possiblestacking sequences if each layer includes a ply. The number of optionsincreases to 5¹⁰ (i.e., 9,765,625) if empty panels are allowed within alayer. Hence, it remains beneficial to reduce the number of potentialsublaminates a priori in order to ensure that the optimization processconverges in a reasonable amount of time. Table 2 shows exemplarycriteria for ten layer sublaminates generated in this manner. Thesecriteria may be developed based on a prior calculated fiber orientationdistribution for the part. These criteria may also change based on theoverall fiber orientation distribution expected for the part. Ifdistribution drastically changes from panel to panel, multiple librariesof sublaminates may be used (e.g., different libraries that each servepanels having different characteristics).

TABLE 2 Exemplary Criteria for Sublaminates Each sublaminate includes atleast four and at most ten ply sequences Each sublaminate always startsand ends with a 0° fiber orientation ply sequence The number of plysequences having a 90° fiber orientation within the sublaminate is lessthan two The number of ply sequences having a 0° fiber orientation isless than four The number of ply sequences having a 45° fiberorientation and the number of ply sequences having a −45° fiberorientation is the same, and 45° fiber orientations alternate with −45°fiber orientations Either a 45° or a −45° fiber orientation will be usedfor the ply sequence placed after the first ply sequence having a 0°fiber orientation and before the last ply sequence having a 0° fiberorientation The same fiber orientation will not be used on more thanfour consecutive ply sequences If the same fiber orientation is repeatedtwice or three times in consecutive ply sequences, the ply sequencesthat come before and after those ply sequences are not permitted to beorthogonal to the consecutive ply sequences

Using the above technique, stacking sequence rules may be complied with,even when different sublaminates are stacked on top of each other in thecomposite part.

Block and Guide Generation

Although stacking sequence rules should ideally be satisfied in eachpanel rather than each block, generating a guide that satisfies thestacking sequence rules reduces the number of stacking sequence ruleviolations in individual panels. In some cases, it may also beimpossible to satisfy all stacking sequence rules for all panels withinthe composite part. In general, if a violation of the stacking sequencerules is required, it is allowed near the mid-plane of the compositepart. It remains desirable to distinguish between inner blocks that areclosest to the laminate mid-plane, and outer blocks that are closer tothe laminate surface. In this example, outer blocks are required tosatisfy the stacking sequence rules, including symmetry, while stackingsequence rules are allowed to be violated in the inner blocks. However,designs that use violating ply sequences in the inner blocks arediscouraged via a penalty to the objective function during optimization.

The design may be subdivided by controller 112 into blocks based oninput selecting a number of blocks, or based on input indicating anumber of layers to include within each block. The size of each block isthe same as the maximum number of ply sequences that could be chosen forthe sublaminates in the previous step. For this example, each blockdefines ten layers. Having extra blocks improves the ability tooptimize, but may also unnecessarily increase the number of plysequences used for manufacturing, which reduces the overallmanufacturing speed. In this example, all panels by definition use atleast the outermost blocks of the part, and thus these blocks are notpart of the optimization process. In this example, the controllerfurther determines which blocks will be considered inner blocks whererule violations are allowed. If the number of inner blocks is too few,it may not be possible to find a feasible solution. If the number ofinner blocks is too many, a solution may include an unnecessary numberof stacking sequence violations. In this example, the number of innerblocks is even and is equally distributed around the mid-plane.Enforcing symmetry between blocks that are equidistant from themid-plane helps to ensure that the rules are met and that the solutionspace is smaller. In the guide generation step, controller 112 mayfurther assume that the inner blocks are symmetric about the mid-planeof the part, even though non-symmetry of the panel laminates in theinner blocks will be allowed later on when the design is chosen. Asymmetric guide for the design improves the symmetry of the panelstacking sequences.

In this example, a binary decision variable Y_(bs) is defined, which is1 when sublaminate s is assigned to block b and 0 otherwise. Sublaminates may be any sublaminate generated in the previous step which has thechosen number of ply sequences. As discussed above, blocks b only spanhalf of the blocks defined in the problem due to symmetry. Integeroptimization may be used to determine the guide design via themathematical formulae below:

Minimize Σ_(i)ε_(bs)Y_(bs)   (1)

Subject to Σ_(s) Y _(bs)=1∀b   (2)

Σ_(s) n _(sk) Y _(bs)≧max_(i)(n _(ik))∀k   (3)

The objective function (1) minimizes the total values assigned to each(b, s) combination. ε_(bs) is a small random noise introduced to allowcontrolled permutations on the guide generation, such that the objectivefunction finds a feasible solution, which may be controlled by changingthe random number seed for ε_(bs). The permutation ε_(bs) may also bebased on the solution from the ply optimization step to improve thesolution by changing the guide rather than using a random permutation.Further and/or alternative algorithms may be utilized as desired, suchas genetic algorithms.

Constraint (2) ensures that each block has only one sublaminateassigned. Constraint (3) ensures that the ply shape optimization basedon the guide will have a feasible number of plies for each fiberorientation, by making sure the number of ply sequences with a givenorientation in the solution is greater than the maximum number requiredfor each panel. In this equation n_(sk) represents the number of plysequences with fiber orientation k in sublaminate s and n_(ik)represents the number of plies with fiber orientation k in panel i.

With the blocks and guides defined for the composite part, controller112 may proceed to optimization of ply sequences for the composite partin order to facilitate manufacturing.

Ply Shape Optimization

FIG. 13 illustrates a set 1300 of six adjacent panels (A, B, C, D, E, F)in an exemplary embodiment. FIG. 14 illustrates an exemplary design fora block (B) of a composite part comprising six adjacent panels in anexemplary embodiment. This design includes layers 1402, 1404, 1406,1408, and 1410. For each layer, controller 112 determines which panelswill be laid up with a ply of fiber. FIG. 15 illustrates ply sequences(1502, 1504, 1506, 1508, 1510) for each of multiple layers of thecomposite part of FIG. 13, based on the design of FIG. 14. For example,ply shape 1502 corresponds with layer 1402 of FIG. 14, ply shape 1504corresponds with layer 1504 of FIG. 14, and so on.

The ply shape optimization process used by controller 112 ensures thatthe resulting ply sequences optimize manufacturability. In this examplemanufacturability is measured using the total ply boundary metrics. Inthis example, during optimization the designs for the inner blocks arechosen for individual layers of a panel. In contrast, for the outerblocks, the design is chosen by selecting a sublaminate from the libraryof feasible sublaminates created in the previous step that arecompatible with the guide for each block.

To facilitate optimization, a binary decision matrix may be used toindicate whether or not to lay up a ply onto a panel in a given layer.In the matrix, this decision is indicated by binary decision variableX_(ijk). This variable is 1 if the ply in panel i is present in plysequence j, which has the fiber orientation represented by anorientation index k. Index i is defined for all panels in the problemand index j and k are defined for all individual ply sequences (asopposed to blocks) to ensure the objective function is calculated forthe entire laminate and not just for the blocks used in theoptimization. The orientation index k may have five values: one for eachof four fiber orientations and a fifth value if no fiber will be laidup. Index k is listed with X_(ij) for tracking purposes only, since thefiber orientation for sequence j is defined by the design. The guide forthe design is represented by binary variables Y_(jk), which aredetermined in the guide generation step. Y_(jk) is 1 if ply sequence jhas fiber orientation index k in the guide and 0 otherwise. During theoptimization the decision variables X_(ijk) for the inner blocks arechanged directly, but for the outer blocks X_(ijk) are determined bywhich sublaminate is picked. The choice of sublaminates is defined bybinary decision variables Z_(ibs), where Z_(ibs) is 1 if panel i inblock b is assigned with sublaminate s. Note that sublaminate s can onlybe picked from a library of sublaminates that are feasible andcompatible with the guide for block b. For the calculation of the plyboundary length, a set of neighbors, N={(i, i′)|where i and i′ arephysically adjacent} is defined, which represents pairs of panels thatare physically adjacent. The values of the Y variables described hereinare not optimized at this point in time, because the Y values wereassigned when the guide was determined in the previous step.

The following formulas may be used to optimize the design at this pointin time, where four fiber orientations are allowed (0°, 45°, −45°, 90°.

$\begin{matrix}{{\begin{matrix}{Maximize} \\{{Subject}\mspace{14mu} {to}}\end{matrix}{~~~~}{\sum_{{{({i,i^{\prime}})} \in N},j,{k \in {TL}}}{w_{{ii}^{\prime}}*X_{ijk}*X_{i^{\prime}{jk}}}}} - {\sum_{j \in {{inner}\mspace{14mu} {blocks}}}{p*X_{ijk}}}} & {{~~}(4)} \\{{{{\sum_{j \in {{Inner}\; {Blocks}}}X_{ijk}} + {\sum_{j \notin {{Inner}\; {Block}}}{2*X_{ijk}}}} = n_{ik}}} & {(5)} \\{{{\forall i},{k \in \lbrack {{0,45},{{- 45},90}} \rbrack}}} & \\{\begin{matrix}{{\sum_{s}Z_{ibs}} \leq 1} & {{\forall i},{b \in {OuterBlocks}}}\end{matrix}} & {(6)} \\{\begin{matrix}{{\sum_{i}X_{ijk}} \leq {M*Y_{jk}}} & {{\forall j},{k \in \lbrack {{0,45},{{- 45},90}} \rbrack}}\end{matrix}} & {(7)} \\{\begin{matrix}{X_{ijk} = {\sum_{s}{\alpha_{sk}Z_{i,{b{j \in b}},s}}}} & {{\forall i},{j \in {OuterBlocks}},k}\end{matrix}} & {(8)} \\{\begin{matrix}{{Y_{j} + {\sum_{{ik} \in {\lbrack{{0,45,} - {45,90}}\rbrack}}X_{ijk}}} \leq 0} & {{\forall j},{k \in \lbrack {{0,45},{{- 45},90}} \rbrack}}\end{matrix}} & {( {9a} )} \\{{{{M*Y_{j}} + {\sum\limits_{{ik} \in {\lbrack{{0,45},{{- 45},90}}\rbrack}}X_{ijk}}} \geq 0}} & {( {9b} )} \\{{{\sum_{j \in {\{{{inner}\mspace{14mu} {block}\mspace{14mu} {in}\mspace{14mu} {one}\mspace{14mu} {side}\mspace{14mu} {of}\mspace{14mu} {mid}\text{-}{plane}}\}}}Y_{j}} =}} & {( {10a} )} \\{{\sum_{j \in {\{{{inner}\mspace{14mu} {block}\mspace{14mu} {in}\mspace{14mu} {the}\mspace{14mu} {other}\mspace{14mu} {side}\mspace{14mu} {of}\mspace{14mu} {mid}\text{-}{plane}}\}}}Y_{j}}} & {( {10b} )} \\{\begin{matrix}{X_{i\; 0,45} = 1} & {\forall i}\end{matrix}} & {( {11a} )} \\{\begin{matrix}{X_{i\; 1,90} = 1} & {\forall i}\end{matrix}} & {( {11b} )} \\{\begin{matrix}{X_{{i\; 2,} - 45} = 1} & {\forall i}\end{matrix}} & {( {11c} )} \\{\begin{matrix}{X_{i\; 3,0} = 1} & {\forall i}\end{matrix}} & {( {11d} )} \\{\begin{matrix}{X_{{ij},{empty}} = 1} & {{\forall{i\mspace{14mu} {on}\mspace{14mu} {free}\mspace{14mu} {edge}}},{j\mspace{14mu} {in}\mspace{14mu} {mid}\text{-}{plane}}}\end{matrix}} & {( {12a} )} \\{{{\begin{matrix}{{X_{{ij},0} + X_{{ij}^{\prime},0}} = 1} & {{\forall{i\mspace{14mu} {not}\mspace{14mu} {on}\mspace{14mu} {free}\mspace{14mu} {edge}}},}\end{matrix}j},{j^{\prime}\mspace{14mu} {in}}}} & {( {12b} )} \\{{{{mid}\text{-}{plane}},{n_{i\; 0} = {odd}}}} & \\{{{\begin{matrix}{{X_{{ij},0} + X_{{ij}^{\prime},0}} = 2} & {{\forall{i\mspace{14mu} {not}\mspace{14mu} {on}\mspace{14mu} {free}\mspace{14mu} {edge}}},}\end{matrix}j},{j^{\prime}\mspace{14mu} {in}}}} & {( {12c} )} \\{{{{mid}\text{-}{plane}},{n_{i\; 0} = {even}}}} & \end{matrix}$

In this example, the objective function (4) maximizes the total lengthof all edges that are not boundary edges, which is equivalent tominimizing the boundary length. The length of a common edge betweenpanels i and i′ is represented by w_(ii′). The second term in theobjective function is a small penalty that is applied if a panel usesthe inner block, in order to force panels to use outer blocks, whichwill decrease stacking sequence rule violation. However, p is smallenough such that the total ply boundary still drives most of theobjective function.

A main constraint of ply shape optimization is constraint (5), whichensures that the number of plies for each orientation in each panelmatches what was given by the user. If the ply sequence does not belongto the inner blocks, the number is multiplied by two to account forsymmetry. Constraint (6) is an assignment constraint which ensures eachpanel will pick at most one sublaminate for each outer block. Note thateach block has its own set of compatible sublaminate candidates that theoptimizer is allowed to pick from.

The remaining constraints ensure that all variables are linkedcorrectly. Constraint (7) links X variables and Y variables. Mrepresents the total number of panels. This constraint forces Xvariables to be zero if Y value is zero for corresponding orientation k.In other words, this constraint forces X variables to be zero for allorientations that do not match the orientation in the guide. For anorientation that is used, thus having Y value as one, the constraintbecomes non-active. Constraint (8) links X variables and Z variables.For ply sequences in outer blocks for each panel, this constraintensures that X variables inherit their values from the sublaminate thatwas picked.

Since inner blocks are allowed to violate the stacking sequence rules,there is a risk of the expected mid-plane of the design not actuallybeing the mid-plane. Constraints (9a) and (9b) identify whether a plysequence in an inner block was used or not. Constraints (10a) and (10b)ensure the number of ply sequences used in the inner blocks on one sideof the mid-plane is equal to the number of ply sequences on the otherside, which makes the mid-plane a true mid-plane which might not be thesame as the guide symmetry plane. Commercial optimization software suchas provided by Gurobi may be used for both the guide generation and plyshape optimization.

In this example, constraints (11) and (12) are fixed values. Theconstraint (11) forces the X value so that the first ply sequence willbe a full ply with 45° and will be followed by a full ply with 90°,−45°, and 0°. In effect, constraint (5) may be equivalent to the mostouter block being fixed. Thus, this may ensure that a stacking sequencerule is satisfied by definition.

The constraint (12) regards two ply sequences in mid-plane. In thisexample, the controller assumes that the total number of ply sequencesis even, which guarantees two ply sequences in the mid-plane. Constraint(12a) ensures that the free edges will not be taped. Constraint (Error!Reference source not found.b) ensures that if a panel is not on a freeedge of the composite part two 0° plies are present at the laminatemid-plane if the number of 0° plies is an even number. Constraint (12c)ensures only one 0° ply is present at the mid-plane if the number of 0°plies is an odd number.

Instead of allowing each ply in the inner blocks to be optimizedindependent of each other, the inner blocks may also be optimized usinga library. Symmetry might be impossible if more than one ply orientationhas an odd number of plies, and therefore the sublaminates for the innerblocks may not be filtered based on symmetry violation. Instead,sublaminates that violate symmetry might be assigned a penalty based onthe degree of symmetry violation that may be added to the objectivefunction if they are used.

User inputs may also be provided to the controller, such as a maximumallowed solution time, a number of total ply sequences in the guide, anda number of ply sequences in the inner blocks. Manufacturabilityimproves as more time is allowed for the optimization. The totalboundary reduces as the solution time increases, which is expected sincethis is the main part of the objective function for ply shapeoptimization.

Parameter Feasibility Analysis

Composite design system 110 may further implement feasibility analysis,prior to performing optimization (e.g., prior to the search for andscoring of solutions dictating the placement of specific sublaminates atspecific panels of the composite part). This saves time and licensingcosts by preventing optimization from being performed for parameter setsthat result in an infeasible optimization problem. In one embodiment,composite design system 110 prevents optimization whenever a compliantcombination of sublaminates does not exist for every panel of thecomposite part. System 110 may further provide feedback indicating howconstraints may be altered to ensure that a feasible solution is likely.For example, feedback may indicate specific panels for which norules-compliant sublaminates exist, or may indicate a change that islikely to result in feasible solutions.

To further illustrate the problem, when a user inputs ply counts tocomposite design system 110 for each panel, it remains possible thatthere are no feasible solutions that comply with all of the ply counts.This issue may be compounded depending on the stacking sequence rulesused to generate sublaminates, as solutions may exist for one library ofsublaminates generated under a first set of stacking sequence rules, yetnot exist for a different library of sublaminates generated under asecond set of stacking sequence rules. The feasibility analysisperformed by controller 112 helps to ensure that at least one solutionexists where the ply counts for the panels do not come into conflictwith the stacking sequence rules for the sublaminates.

In this embodiment, before engaging in optimization, controller 112reviews the ply counts for each panel in combination with stackingsequence rules for sublaminates, in order to ensure that a solution canbe found. Thus, instead of engaging in a full optimization process byrote, which may utilize hours of time and/or valuable software licenses,controller 112 selectively determines whether to perform optimization,depending on the results of the feasibility analysis.

As discussed above, sublaminates in the library may be chosen to obeystacking sequence rules. By creating ply shapes and stacking sequencesonly from sublaminates already known to obey the stacking sequencerules, solutions constructed from these sublaminates are intended toreduce the chances of non-compliance. Regardless of the measures takenabove to ensure compliance with stacking sequence rules, thesublaminates may not always be compatible with ply counts for panels ofthe composite part. That is, generated sublaminates may not comply withdesired/predefined ply counts for panels. For example, while stackingsequence rules may indicate combinations of ply orientations that arepermissible on a global level, the number of plies per orientation forthese permissible combinations might not match the number of plies perorientation specified for individual panels. This means thatsublaminates which are individually compliant with stacking sequencerules cannot always be combined into a laminate that conforms with theply counts required, which may vary from panel to panel. These issuesmay be particularly difficult to locate manually, as such conflicts mayexist in just a few panels on the composite part. If stacking sequencerules are infeasible in light of the ply counts for the panels, the usermust either change the number of blocks permitted (i.e., the number ofsublaminates allowed to fill in each panel), alter the stacking sequencerules, and/or change the size of the sublaminates, followed by retryingthe feasibility check.

Further discussion of the operations of controller 112 while performingfeasibility analysis are provided with regard to FIG. 16. Assume, forthis embodiment, that a user has provided a set of stacking sequencerules and ply counts, and has requested that optimization be performedfor a multi-panel composite part based on the provided rules. Forexample, the user may specifically request feasibility analysis via auser interface, or may request that optimization be performed, in whichcase controller 112 may engage in a “preflight” feasibility analysis inorder to determine whether to prevent optimization.

Controller 112 identifies stacking sequence rules for sublaminates(e.g., as input by the user) (step 1602). The sublaminates compriseconsecutively stacked layers, and are utilized during optimization suchthat they are stacked together to fill a panel. The stacking sequencerules constrain the composition of the sublaminates. For example, thestacking sequence rules may define allowable ply sequences within asublaminate, may define a minimum number and a maximum number of pliesfor a sublaminate, on a fiber orientation-by-fiber orientation basis,may define allowable numbers of consecutive plies having the same fiberorientation, etc.

When engaging in feasibility analysis, controller 112 searches over theentire composite geometry (e.g., each panel) of the composite part.Thus, controller 112 determines that not all panels of the compositepart have been checked for compliance (step 1604), and identifies apanel of the composite part for feasibility analysis (step 1606).Controller 112 proceeds to identify ply counts for the panel. The plycounts constrain a number of plies at the panel, and may for examplecomprise single numbers indicating the value of various constraints(step 1608).

Controller 112 further selects the allowed number of sublaminates(N_(S)) to be used in the optimization routine (step 1610). For example,if N_(S)=2, then up to two individual sublaminates may be used at eachpanel to “fill in” the panel with plies. Next, controller 112 calculatesply count ranges for a resulting laminate, based on N_(S) and thestacking sequence rules (step 1612).

Controller 112 further determines whether the ply counts for the panelcomply with the ply count ranges for the laminate (step 1614). This maybe performed in order to determine stacking sequence rules and/or valuesof N_(S) for which a solution could hypothetically be found for thecomposite part. Such analysis helps to eliminate infeasible stackingsequence rules and numbers of sublaminates from being considered duringoptimization.

A feasible problem may exist if a number of sublaminates, N_(S) ^(opt),can be determined for which all panels have at least one N_(S)≦N_(S)^(opt) for which all constraints below are satisfied. Thus, for everypanel, I, controller 112 determines if N_(S) can satisfy the specifiedply counts, N_(ik). Controller 112 checks the ply counts for each fiberorientation, k:

N _(k) ^(s) +N _(k) ^(min) ·N _(S) ≦N _(ik) ≦N _(k) ^(s) +N _(k) ^(max)·N _(S)   (13)

Where N_(k) ^(min) and N_(k) ^(max) are the minimum and maximum numberof plies for orientation k allowed in a single sublaminate, and N_(k)^(s) is the total number of (fixed) surface plies with orientation k inthe total laminate.

For a more precise determination the equation above can be made todistinguish between inner and outer sublaminates.

N _(k) ^(s) +N _(k) ^(min) ^(_) ^(inner) ·N _(S) _(-inner) +2*(N _(k)^(min) ^(_) ^(outer) ·N _(S) _(_) _(outer))≦N _(ik) ≦N _(k) ^(s) +N _(k)^(max) ^(_) ^(inner) ·N _(S) _(inner) +2*(N _(k) ^(max) ^(_) ^(outer) ·N_(S) _(_) _(outer))   (14)

where N_(k) ^(min) and N_(k) ^(max) can be different for the inner andthe outer sublaminates. N_(S) _(_) _(inner) is the total number of innersublaminates, while N_(s) _(_) _(outer) is half of the number of outersublaminates (since each half is a mirror image of the other).

Controller 112 may additionally ensure that the range for the totalnumber of plies for the laminate complies with the total ply count forthat panel:

$\begin{matrix}{{{\sum\limits_{k = 1}^{N_{angles}}\; N_{k}^{s}} + {N_{S} \cdot {\min ( {N_{t}^{\min},{\sum\limits_{k = 1}^{N_{angles}}N_{k}^{\min}}} )}}} \leq {\sum\limits_{k = 1}^{N_{angles}}N_{ik}} \leq {{\sum\limits_{k = 1}^{N_{angles}}\; N_{k}^{s}} + {\max ( {N_{t}^{\max},{\sum\limits_{k = 1}^{N_{angles}}N_{k}^{\max}}} )}}} & (15)\end{matrix}$

where N_(t) ^(min) and N_(t) ^(max) are the minimum and maximum plies asublaminate is allowed to have, regardless of orientation.

The minimum and maximum number of plies per orientation per sublaminatemay be based on the following: N_(k) ^(min) is the larger of a value setdirectly by the user, and a maximum number of plies allowed for aspecific fiber orientation, and N_(k) ^(max) is the smallest of thevalue set directly by the user, and the number that results from thefollowing equation:

$\begin{matrix}{N_{k}^{\max} = {N_{t}^{\max} - {\sum\limits_{j = 1}^{N_{angles}}( {{N_{j}^{\min}\mspace{14mu} {for}\mspace{14mu} j} \neq k} )}}} & (16)\end{matrix}$

Furthermore, the minimum number of plies per sublaminate may be definedas

$\begin{matrix}{N_{t}^{\min} = {\sum\limits_{k = 1}^{N_{angles}}N_{k}^{\min}}} & (17)\end{matrix}$

and the maximum total number of plies per sublaminate should be largerthan (or equal to) the minimum total number of plies, as indicated by:

N_(t) ^(min)≦N_(t) ^(max)   (18)

Using the above calculations and formulae, controller 112 may determinewhether an infeasibility exists for a given N_(S), set of stackingsequence rules, and ply counts. Thus, controller 112 may automaticallydetermine if ply counts for the panel have a possibility of being met,may automatically identify whether infeasibility will occur at the panelbeing analyzed, and may automatically identify how many sublaminateswould be required given the rules in order to be assured at least onesolution exists within the solution space.

By way of example, if five sublaminates were selected, with the stackingsequence rules requiring at least two 0° plies per sublaminate, and apanel only needs eight 0° plies, no solution will exist for that panelbecause five sublaminates will always result in at least ten 0° plies.In such an example, the laminate orientation, panel where the issueoccurs, and type of violation may be indicated to the user to identifywhich rules should be modified. In this example, the stacking sequencerules could be modified to require only one 0° ply per sublaminate.Controller 112 may further proceed to check each of multiple differentnumbers of sublaminates (step 1616), in order to determine which rangesof numbers of sublaminates will be compliant with the ply countsspecified for the panel. This may be performed, for example, bycalculating additional ply count ranges for the panel (each additionalply count corresponding to a different number of sublaminates), anddetermining whether the ply counts specified for the panel comply withadditional ply count ranges for the panel.

If not all desired numbers of sublaminates have been checked forcompliance, then controller 112 may return to step 1610. Otherwise,controller 112 may proceed to step 1604 and identify a next panel of thecomposite part to check for compliance, until each panel of thecomposite part has been analyzed.

In further embodiments, controller 112 may determine that the next panelto be analyzed has ply counts specified that are the same as ply countsspecified for a panel that has already been analyzed. Hence, controller112 may forego steps 1610, 1612, and 1614, since a functionallyidentical panel has already been checked for compliance. In embodimentswhere inner and outer sublaminates are distinguished, steps 1610-1616may be performed as two separate loops, where different N_(S) values forinner and outer blocks may be used. For example N_(S) for inner blocksmay be less than or equal to four, while N_(S) for outer blocks may beany suitably high number.

FIG. 17 is a table illustrating a comparison of ply count ranges for alaminate 1700 to ply counts for a panel of a composite part in anexemplary embodiment. As shown in FIG. 17, possible ply count ranges1710 for a panel are determined based on N_(S), the number ofsublaminates to be used during optimization (in this case, N_(S)=3), inaddition to stacking sequence rules 1712 for those sublaminates. Theavailable ply count ranges 1710 are compared to the ply counts specifiedfor the panel (“panel ply count req'mt”). So long as the available plycount ranges 1720 include the desired ply counts specified for eachfiber orientation, a solution should be available for the panel. In thiscase, for the current value of N_(S), no solution can be found, becausethe range at +90° does not include the ply count. This result (“NO”) isindicated at cell 1730.

After all desired panels have been checked for compliance (e.g., allpanels at the composite part) controller 112 further generates a reportindicating which values of N_(S) are compatible for specific panelsand/or the entire composite part, and transmits an instruction todisplay 118 to present the report to a user (step 1618). The reportindicates whether ply counts specified for the panels of the compositepart are compliant with the ply count ranges provided by thesublaminates. The report may indicate whether the stacking sequencerules and/or ply counts are infeasible (i.e., if the rules aredetermined to have no possible solution). The report may furtherindicate if a modification to N_(S) would cause the rules to befeasible. Furthermore, if infeasibilities are found, then the locationsof these infeasibilities (e.g., panels at which the rules cannot becomplied with) are provided. For example, this detailed information mayindicate which specific rules cannot be complied with at a panel.

FIG. 18 illustrates a report 1800 presented via a display 118 forindicating detected compliance issues to a user. In this case, report1800 indicates a location at which the noncompliance was detected (Panel1), the nature of the noncompliance (90° ply count conflict), and apotential solution to the noncompliance (changing N_(S) from three tofour). In further embodiments, the report indicates which values ofN_(S) have ply count ranges that are fully compliant with the ply countsspecified for the panels. In a further embodiment, controller 112actively prevents optimization of the composite part in response todetecting that the ply count ranges for at least one panel of thecomposite part do not comply with the ply counts specified for thatpanel.

Sublaminate Family Generation

The various optimization techniques and systems described above may befurther enhanced by controller 112 engaging in automatic generation ofsublaminate libraries. This ensures that each time a new set of stackingsequence rules is defined, a new library of sublaminates in compliancewith those stacking sequence rules may be rapidly deployed for use inoptimization.

In one embodiment, controller 112 automatically identifies and generatesall possible rules-compliant sublaminates up to a specified size. Thisenables a complete library of sublaminates to be created once for a setof stacking sequence rules, regardless of whether the block size forthat set of rules is changed. A new conforming library may thus bequickly generated by controller 112 within seconds or minutes, andsublaminates from this library may then be utilized when optimizing thecomposite part. Since design of composite parts is often an iterativeprocess, the ability to rapidly adapt the library of sublaminates to newsets of rules is highly beneficial and saves a great deal of time.Furthermore, the libraries generated via the techniques described belowmay be utilized by different designers in order to explore the varyingcharacteristics of sublaminates that comply with different sets ofrules.

Controller 112 acquires the stacking sequence rules (e.g., from a useror from memory 116), and determines a maximum number of plies/layers toutilize in a sublaminate. The stacking sequence rules indicate how pliesof different orientations should be stacked in a sublaminate. Inembodiments where the stacking sequence rules are qualitative,controller 112 engages in a mathematical interpretation of thesestacking sequence rules in order to translate the qualitative rules intoquantitative rules. For example, controller 112 may replace aqualitative requirement for “interspersed orientations” of plies with arequirement that no fiber orientation repeats more than three timeswithin a panel.

Exemplary quantitative rules may include a minimum total ply constraintindicating a minimum number of total plies to be used in one or morepanels, a minimum ply constraint indicating a minimum number of plies tobe used per ply orientation at a panel, and a maximum ply constraintindicating a maximum number of plies to be used per ply orientation at apanel. In this manner, stacking sequence rules may define allowableranges of ply counts for a sublaminate on a fiber orientation-by-fiberorientation basis. Further quantitative rules include a minimumconsecutive ply constraint indicating a minimum number of plies of thespecified orientation to be stacked consecutively at a panel, and amaximum consecutive ply constraint indicating the maximum number ofplies of the a specified orientation to be stacked consecutively at apanel. Thus, stacking sequence rules may define allowable numbers ofconsecutive plies of the same fiber orientation. Still furtherquantitative rules include an active sequence constraint specifying thata particular ply at a panel has a specified orientation (or be one of aset of specified orientations), an alternating set constraint requiringthat plies of specified orientations must always alternate with respectto each other throughout a sublaminate, and a disallowed permutationdefining consecutive sequences of fiber orientations that are disallowedfrom appearing in a sublaminate. These rules, and the rules discussed inother sections, may be combined and modified in any suitable manner.

Once a set of quantitative stacking sequence rules are determined,controller 112 engages in a two-stage process. In the first stage, someof the stacking sequence rules are used to prune a tree of candidatesublaminates. After pruning, each sublaminate in the tree is a candidatein that it potentially complies with all stacking sequence rules, but isnot yet guaranteed to conform to all such rules. The tree may begenerated via recursion, which greatly alleviates the computational timerequired to generate a full sublaminate library, since branches of thetree that are non-compliant may be pruned at an early stage. The secondstage reviews the sublaminate candidate tree, and checks each possiblebranch that may be rules-compliant. Any candidate sublaminates thatviolate the full set of rules are also pruned. The resulting pruned treeis thus guaranteed to consist only of sublaminates that conform to thestacking sequence rules.

The primary objective of the generation process is to produce everypossible rule-conforming sublaminate up to the maximum number of layers.For example, controller 112 may generate a library of all sublaminatesthat comply with the set of rules described in Table 2 above. However,as mentioned above, the generation process may be performed repeatedlyin order to generate new libraries of sublaminates for new sets ofrules.

Controller 112 may include multiple components, implemented by ahardware processor or as independent hardware, in order to engage intree generation. As illustrated by FIG. 19, these components may includea sublaminate candidate tree generator 1902 which generates a tree ofcandidate sublaminates, and a conformance checker 1910 that prunesbranches of candidate sublaminates that fail to comply with all of thestacking sequence rules. Sublaminate candidate tree generator 1902 mayutilize sequence orientation checker 1904 to check sublaminates forcompliance with stacking sequence rules, may utilize branch pruner 1906to remove sublaminates that do not comply with stacking sequence rules,and may utilize candidate brancher 1908 to generate new sublaminatesfrom prior sublaminates. Conformance checker 1912 may utilize fullconformance checker 1912 to check a generated tree of candidatesublaminates for compliance with additional rules.

Assume, for this embodiment, that a user has modified the stackingsequence rules, and desires to generate a new library of sublaminatesthat are compliant with the new stacking sequence rules. Controller 112detects the change to the stacking sequence rules, and initiates thetwo-stage creation of a new library of sublaminates in response to thechange, as illustrated in FIGS. 20-21.

Stage one comprises controller 112 generating a list of candidatesublaminates via a tree. Utilizing a tree to validate the sublaminatesensures that non-compliant branches of sublaminates are pruned as earlyas possible, which reduces overall processing time when generating thelibrary. Stage one includes controller 112 creating “root” sublaminatesthat each comprise consecutively stacked layers/plies having a uniquesequence of fiber orientations (step 2002). These root sublaminates maybe created for example, with a selected minimum number of layers. Theroot sublaminates are basic sublaminates from which larger sublaminatesare created. Controller 112 checks the newly created sublaminates forcompliance with stacking sequence rules that constrain how fiberorientations are sequenced across the layers of the sublaminates (step2004). For example, this may include checking compliance with minimum,maximum, and/or consecutive ply count limits imposed on the newsublaminates on a fiber orientation-by-fiber orientation basis, checkingactive sequencing constraints applied to the “top” of the stack,checking for disallowed sequences of fiber orientations, and/or checkingfor discrepancies in fiber orientations that are expected to alternate.For example, if +45° and −45° fiber orientations are expected to bepaired or alternate with each other throughout a sublaminate, controller112 may count the number of layers having +45° and −45° fiberorientations. If the number of +45° layers is more than one greater orless than the number of −45° layers, then the sublaminate may benon-compliant with such pairing rules and hence discarded.

Controller 112 proceeds to remove newly created sublaminates that do notcomply with the stacking sequence rules (2006), and checks to seewhether a maximum sublaminate size (i.e., a maximum number of layers)has been reached (step 2008). If the maximum size has not yet beenreached, controller 112 may flag the most recently generatedsublaminates as old sublaminates. These old sublaminates will be used inthe generation of new sublaminates that each include an additional layer(step 2010). The new sublaminates are created based on the oldsublaminates, by adding a layer to the old sublaminates to create a newsublaminate having a unique sequence of fiber orientations.

Specifically, the generation process includes selecting an oldsublaminate that was not removed (step 2012), and selecting a uniquefiber orientation for a layer that will be added to the old sublaminate(step 2014). Controller 112 then generates a new sublaminate byappending the layer having the fiber orientation to the old sublaminate(step 2016). If all available fiber orientations (e.g., 0°, +45°,−45°90°) have not been used to create new sublaminates (step 2018) fromthe old sublaminate, another fiber orientation is selected in step 2012and a another new sublaminate is generated from the old sublaminate.

In one embodiment, when selecting fiber orientations for the new layer,sequence orientation checker 1904 reviews each potential fiberorientation for the new layer, and constructs a list of fiberorientations permitted for the new layer. With the permittedorientations known, candidate brancher 1908 traverses all leaves in thesublaminate candidate tree, and appends each angle of the permittedorientations as a new branch. Once each branch has been created, thebranch pruner 1906 checks all of the new branches for violations of thestacking sequence rules. Any branch found to be rejected due to a ruleviolation is pruned, and thus no further branches will be produced alongthat path.

Alternatively, if all available fiber orientations have been used tocreated new sublaminates for the selected old sublaminate, thencontroller 112 checks to see if all remaining old sublaminates (e.g.,having the prior number of layers) have been used to create newsublaminates (step 2020). If more old sublaminates remain, thencontroller 112 selects another old sublaminate in step 2012, andproceeds to generate further new sublaminates. Alternatively, if all oldsublaminates have been used to create new sublaminates, processingreturns to step 2004. In this manner, controller 112 iteratively repeatschecking, removing, and generating new sublaminates until a maximumnumber of layers has been reached.

As described above, the process may be performed iteratively, repeatingeach time that a new layer is added to the sublaminate library. Hence,the process may initiate with sublaminates having X layers (e.g., threelayers), and then proceed to laminates having X+1 layers, and so on. Inthis manner, the process continues until sublaminates having a maximumsize have been generated and checked for compliance with the stackingsequence rules. In one embodiment, the controller repeats the checking,removing, and generating recursively by traversing an integer tree,wherein each sublaminate comprises a node in the integer tree, and anumber of branches from each sublaminate corresponds with a number ofavailable fiber orientations. The number and type of available fiberorientations may vary.

After the tree has been filled with sublaminates up to the maximum sizeand pruned, all sublaminates left in the tree are considered candidatesublaminates, in that they are potentially fully compliant with therules. However, some rules may not be amenable to analysis until after asublaminate has been fully completed. For example, active sequencingrules that are considered from the bottom of the stack, instead of thetop of the stack of a sublaminate, are not considered during method 2000because these constraints may prune branches from which viablesublaminates may be generated. If an active sequencing rule was appliedduring tree generation that specified that the last angle of asublaminate must be 0°, then branch pruner 1906 pruner would removesublaminates that did not end in a 0° ply. However, larger sublaminatesthat included such a removed sublaminate and still ended in 0° wouldalso be eliminated by this process, so pruning early would result inmissed conforming sublaminates. Thus, conformance checker withholdsreview of sublaminates for compliance with such rules until the tree hasbeen completed and filled with candidates.

Since checking for compliance with all rules is not desirable during thegeneration of the tree, compliance with additional stacking sequencerules may be checked in a second stage after the tree has been generatedby method 2000. In the second stage, conformance checker 1910 checks allrules not checked by branch pruner 1906. Thus, each candidatesublaminate existing in the tree after the completion of the first stageis passed to conformance checker 1910, which either accepts or rejectsthe sublaminate based on the additional stacking sequence rules. If anyrule is violated, the candidate sublaminate is rejected. At the end ofthis process, only those candidate sublaminates that successfully meetall stacking sequence rules remain. These sublaminates are returned asoutput, and may be stored in memory 116 as a sublaminate library for usein the optimization processes discussed above.

FIG. 21 provides method 2100 for checking compliance of the candidatesublaminates with additional stacking sequence rules in a second stageof analysis. Method 2100 enables controller 112, after the tree has beengenerated, to check all sublaminates that have not yet been removed forcompliance with additional stacking sequence rules, and removesublaminates that do not comply with the additional stacking sequencerules. According to method 2100, Controller 112 identifies additionalstacking sequence rules, such as “bottom up” sequencing requirements(e.g., requiring a specific ordered set of fiber orientations in thebottom X layers of a sublaminate), or requirements that disallowdeviations between paired fiber orientations. For example, an additionalstacking sequence rule may indicate that plies of a first fiberorientation (e.g., +45°) must be paired with plies of a second fiberorientation (e.g., −45°). A check for deviations may actively reviewlayers of a sublaminate from top down, confirming that whenever onelayer having a fiber orientation that should be paired is encountered,it is followed by the other fiber orientation in the pair beforerepeating. For example, a check may confirm that each time a +45° layeror −45° layer is encountered, it is followed by a layer of the otherpaired fiber orientation (e.g., −45° and +45°, respectively) before itis repeated.

Controller 112 further selects a candidate sublaminate (step 2104), andchecks the selected candidate sublaminate for compliance with theadditional stacking sequence rules (step 2106). If the sublaminate isnoncompliant (step 2108), it is removed (step 2110). Alternatively, ifthe sublaminate is compliant, processing proceeds onward withoutremoving the sublaminate. Controller 112 determines whether allcandidate sublaminates have been checked for compliance with theadditional stacking sequence rules (step 2114). If not all candidatesublaminates have been checked, processing returns to step 2014 and anew candidate sublaminate is selected. If all candidate sublaminateshave been checked, then controller 2116 stores the sublaminates inmemory 116 as a library of available sublaminates for designing thecomposite part (step 2116).

FIG. 22 shows an example of the process of branch generation for a tree2200 comprising a single old sublaminate 2210 having four plies 2212,2214, 2216, and 2218 oriented at [0°/45°/0°/0°]. In this example, thereare four allowed fiber orientations for any given ply: 0°, 45°, −45°,and 90°. Sequence orientation checker 1904 allows all four neworientations to be considered as candidates, since there are no activesequence constraints on this sequence. Candidate brancher 1908 thenproduces four new sublaminates that branch from sublaminate 2210,corresponding to the various new sublaminates that could be produced byappending these four orientations to the current sublaminate candidatenode. Branch pruner 1906 then identifies that three of these four newsublaminates violate different stacking sequence rules. First newsublaminate 2220 includes layer 2222, which violates a maximumconsecutive ply constraint of at most two 0° plies together. First newsublaminate 2220 would yield three consecutive 0° plies, and thus isremoved. Second new sublaminate 2230 includes layer 2232 which violatesa paired ply rule (e.g., an alternating set constraint) that wasprovided, since two 45° orientations appear without an interim −45°.Third new sublaminate 2240 is permissible as new layer 2242 results inno violation of stacking sequence rules. However, fourth new sublaminate2250 includes layer 2252 which violates a disallowed sequence constraintindicating that the sequence [0°/0°/0°/90°] is not permitted to appearin any sublaminate. Thus, branch pruner 1906 removes the three newsublaminates that do not comply with the rules. Only one branch remainsas a permissible new sublaminate.

Application to Aircraft Manufacturing

Referring more particularly to the drawings, embodiments of thedisclosure may be described in the context of an aircraft manufacturingand service method 2300 as shown in FIG. 23 and an aircraft 2302 asshown in FIG. 24. During pre-production, exemplary method 2300 mayinclude specification and design 2304 of the aircraft 2302 and materialprocurement 2306. During production, component and subassemblymanufacturing 2308 and system integration 2310 of the aircraft 2302takes place. Thereafter, the aircraft 2302 may go through certificationand delivery 2312 in order to be placed in service 2314. While inservice by a customer, the aircraft 2302 is scheduled for routinemaintenance and service 2316 (which may also include modification,reconfiguration, refurbishment, and so on).

Each of the processes of method 2300 may be performed or carried out bya system integrator, a third party, and/or an operator (e.g., acustomer). For the purposes of this description, a system integrator mayinclude without limitation any number of aircraft manufacturers andmajor-system subcontractors; a third party may include withoutlimitation any number of vendors, subcontractors, and suppliers; and anoperator may be an airline, leasing company, military entity, serviceorganization, and so on.

As shown in FIG. 24, the aircraft 2302 produced by exemplary method 2300may include an airframe 2318 with a plurality of systems 2320 and aninterior 2322. Examples of high-level systems 2320 include one or moreof a propulsion system 2324, an electrical system 2326, a hydraulicsystem 2328, and an environmental system 2330. Any number of othersystems may be included. Although an aerospace example is shown, theprinciples of the invention may be applied to other industries, such asthe automotive industry.

Apparatus and methods embodied herein may be employed during any one ormore of the stages of the production and service method 2300. Forexample, components or subassemblies corresponding to production stage2308 may be fabricated or manufactured in a manner similar to componentsor subassemblies produced while the aircraft 2302 is in service. Also,one or more apparatus embodiments, method embodiments, or a combinationthereof may be utilized during the production stages 2308 and 2310, forexample, by substantially expediting assembly of or reducing the cost ofan aircraft 2302. Similarly, one or more of apparatus embodiments,method embodiments, or a combination thereof may be utilized while theaircraft 2302 is in service, for example and without limitation, tomaintenance and service 2316.

In one embodiment, composite design system 110 is utilized duringspecification and design of composite parts for a portion of airframe118. This allows composite part 150 to be manufactured in component andsubassembly manufacturing 2308, and then be assembled into an aircraftin system integration 2310. Part 150 may then be utilized in service2314 until wear renders part 150 unusable. Then, in maintenance andservice 2316, part 150 may be discarded and replaced with a newlymanufactured part 150 based on a design created by composite designsystem 110.

Any of the various elements shown in the figures or described herein maybe implemented as hardware, software, firmware, or some combination ofthese. For example, an element may be implemented as dedicated hardware.Dedicated hardware elements may be referred to as “processors”,“controllers”, or some similar terminology. When provided by aprocessor, the functions may be provided by a single dedicatedprocessor, by a single shared processor, or by a plurality of individualprocessors, some of which may be shared. Moreover, explicit use of theterm “processor” or “controller” should not be construed to referexclusively to hardware capable of executing software, and mayimplicitly include, without limitation, digital signal processor (DSP)hardware, a network processor, application specific integrated circuit(ASIC) or other circuitry, field programmable gate array (FPGA), readonly memory (ROM) for storing software, random access memory (RAM),non-volatile storage, logic, or some other physical hardware componentor module.

Also, an element may be implemented as instructions executable by aprocessor or a computer to perform the functions of the element. Someexamples of instructions are software, program code, and firmware. Theinstructions are operational when executed by the processor to directthe processor to perform the functions of the element. The instructionsmay be stored on storage devices that are readable by the processor.Some examples of the storage devices are digital or solid-statememories, magnetic storage media such as a magnetic disks and magnetictapes, hard drives, or optically readable digital data storage media.

Although specific embodiments are described herein, the scope of thedisclosure is not limited to those specific embodiments. The scope ofthe disclosure is defined by the following claims and any equivalentsthereof.

1. A method of creating a library of sublaminates used in optimizingfiber orientations of a multi-layer composite part subdivided intopanels that each comprise a fraction of the area of the composite part,the method comprising: creating sublaminates that each compriseconsecutively stacked layers having a unique sequence of fiberorientations; checking the sublaminates for compliance with stackingsequence rules that constrain how fiber orientations are sequenced;removing sublaminates that do not comply with the stacking sequencerules; generating new sublaminates that each include an additionallayer, by, for each of multiple fiber orientations: selecting asublaminate that was not removed; and generating a new sublaminate byappending a layer having the fiber orientation to the selectedsublaminate; repeating the checking, the removing, and the generatinguntil a maximum number of layers has been reached; and storing thesublaminates in memory as a library of available sublaminates fordesigning the composite part.
 2. The method of claim 1 furthercomprising: after the maximum number of layers has been reached,checking all sublaminates that have not yet been removed for compliancewith additional stacking sequence rules; and removing sublaminates thatdo not comply with the additional stacking sequence rules.
 3. The methodof claim 2 wherein: the additional stacking sequence rules indicate thatplies of a first fiber orientation must be paired with plies of a secondfiber orientation.
 4. The method of claim 1 wherein: repeating thechecking, the removing, and the generating is performed recursively bytraversing an integer tree, wherein each sublaminate comprises a node inthe integer tree, and a number of branches from each sublaminatecorresponds with a number of fiber orientations.
 5. The method of claim1 wherein: the stacking sequence rules define allowable ranges of plycounts for a sublaminate on a fiber orientation-by-fiber orientationbasis.
 6. The method of claim 1 wherein: the stacking sequence rulesdefine allowable numbers of consecutive plies of the same fiberorientation.
 7. The method of claim 1 wherein: the stacking sequencerules define consecutive sequences of fiber orientations that aredisallowed.
 8. The method of claim 1 further comprising: detecting achange to the stacking sequence rules; and creating a new library ofsublaminates in response to detecting the change.
 9. A non-transitorycomputer readable medium embodying programmed instructions which, whenexecuted by a processor, are operable for performing a method ofcreating a library of sublaminates used in optimizing fiber orientationsof a multi-layer composite part subdivided into panels that eachcomprise a fraction of the area of the composite part, the methodcomprising: creating sublaminates that each comprise consecutivelystacked layers having a unique sequence of fiber orientations; checkingthe sublaminates for compliance with stacking sequence rules thatconstrain how fiber orientations are sequenced; removing sublaminatesthat do not comply with the stacking sequence rules; generating newsublaminates that each include an additional layer, by, for each ofmultiple fiber orientations: selecting a sublaminate that was notremoved; and generating a new sublaminate by appending a layer havingthe fiber orientation to the selected sublaminate; repeating thechecking, the removing, and the generating until a maximum number oflayers has been reached; and storing the sublaminates in memory as alibrary of available sublaminates for designing the composite part. 10.The medium of claim 9 wherein the method further comprises: after themaximum number of layers has been reached, checking all sublaminatesthat have not yet been removed for compliance with additional stackingsequence rules; and removing sublaminates that do not comply with theadditional stacking sequence rules.
 11. The medium of claim 10 wherein:the additional stacking sequence rules indicate that plies of a firstfiber orientation must be paired with plies of a second fiberorientation.
 12. The medium of claim 9 wherein: repeating the checking,the removing, and the generating is performed recursively by traversingan integer tree, wherein each sublaminate comprises a node in theinteger tree, and a number of branches from each sublaminate correspondswith a number of fiber orientations.
 13. The medium of claim 9 wherein:the stacking sequence rules define allowable ranges of ply counts for asublaminate on a fiber orientation-by-fiber orientation basis.
 14. Themedium of claim 9 wherein: the stacking sequence rules define allowablenumbers of consecutive plies of the same fiber orientation.
 15. Themedium of claim 9 wherein: the stacking sequence rules defineconsecutive sequences of fiber orientations that are disallowed.
 16. Themedium of claim 9 wherein the method further comprises: detecting achange to the stacking sequence rules; and creating a new library ofsublaminates in response to detecting the change.
 17. An apparatuscomprising: a memory that stores stacking sequence rules that constrainhow fiber orientations are sequenced; and a controller that creates alibrary of sublaminates used in optimizing fiber orientations of amulti-layer composite part subdivided into panels that each comprise afraction of the area of the composite part, by: creating sublaminatesthat each comprise consecutively stacked layers having a unique sequenceof fiber orientations, checking the sublaminates for compliance with thestacking sequence rules; and removing sublaminates that do not complywith the stacking sequence rules, the controller generates newsublaminates that each include an additional layer, by, for each ofmultiple fiber orientations: selecting a sublaminate that was notremoved, and generating a new sublaminate by appending a layer havingthe fiber orientation to the selected sublaminate, and the controllerrepeats the checking, the removing, and the generating until a maximumnumber of layers has been reached, and stores the sublaminates in thememory as a library of available sublaminates for designing thecomposite part.
 18. The apparatus of claim 17 wherein: after the maximumnumber of layers has been reached, the controller further checks allsublaminates that have not yet been removed for compliance withadditional stacking sequence rules, and removes sublaminates that do notcomply with the additional stacking sequence rules.
 19. The apparatus ofclaim 18 wherein: the additional stacking sequence rules indicate thatplies of a first fiber orientation must be paired with plies of a secondfiber orientation.
 20. The apparatus of claim 17 wherein: the controllerrepeats the checking, the removing, and the generating recursively bytraversing an integer tree, wherein each sublaminate comprises a node inthe integer tree, and a number of branches from each sublaminatecorresponds with a number of fiber orientations.
 21. The apparatus ofclaim 17 wherein: the stacking sequence rules define allowable ranges ofply counts for a sublaminate on a fiber orientation-by-fiber orientationbasis.
 22. The apparatus of claim 17 wherein: the stacking sequencerules define allowable numbers of consecutive plies of the same fiberorientation.
 23. The apparatus of claim 17 wherein: the stackingsequence rules define consecutive sequences of fiber orientations thatare disallowed.
 24. The apparatus of claim 17 wherein: the controllerdetects a change to the stacking sequence rules, and creates a newlibrary of sublaminates in response to detecting the change.